package com.ruoyi.factory.staffSafe.mapper;

import com.ruoyi.common.annotation.DataSource;
import com.ruoyi.common.enums.DataSourceType;
import com.ruoyi.factory.staffSafe.domain.StaffType;
import com.ruoyi.factory.staffSafe.domain.StaffsafeInfo;
import com.ruoyi.factory.staffSafe.domain.StaffsafeRecord;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 培训档案人员信息Mapper接口
 * 
 * @author ljj
 * @date 2024-04-12
 */
public interface StaffsafeInfoMapper 
{
    /**
     * 查询培训档案人员信息
     * 
     * @param id 培训档案人员信息主键
     * @return 培训档案人员信息
     */
    public StaffsafeInfo selectStaffsafeInfoById(String id);

    public StaffsafeInfo selectStaffsafeInfoByCode(String userCode);

    /**
     * 查询培训档案人员信息列表
     * 
     * @param staffsafeInfo 培训档案人员信息
     * @return 培训档案人员信息集合
     */
    public List<StaffsafeInfo> selectStaffsafeInfoList(StaffsafeInfo staffsafeInfo);

    public List<StaffsafeInfo> selectStaffsafeInfoList2(StaffsafeInfo staffsafeInfo);

    public List<StaffsafeInfo> selectStaffsafeInfoList3(StaffsafeInfo staffsafeInfo);

//    public List<StaffsafeInfo> selectStaffsafeInfoList4(@Param("list")List<String> list, StaffsafeInfo staffsafeInfo);
    public List<StaffsafeInfo> selectStaffsafeInfoList4(@Param("staffsafeInfo")StaffsafeInfo staffsafeInfo, @Param("ids")List<String> ids);

    /**
     * @author: Liujiaji
     * @date: 2024/4/15 09:05
     * @description: TODO 查询erp员工信息
     * @param: [staffsafeInfo]
     * @return: java.util.List<com.ruoyi.factory.staffSafe.domain.StaffsafeInfo>
     **/
    @DataSource(value = DataSourceType.SLAVE)
    public List<StaffsafeInfo> selectStaffsafeInfoListByErp(StaffsafeInfo staffsafeInfo);

    /**
     * 新增培训档案人员信息
     * 
     * @param staffsafeInfo 培训档案人员信息
     * @return 结果
     */
    public int insertStaffsafeInfo(StaffsafeInfo staffsafeInfo);

    /**
     * 修改培训档案人员信息
     * 
     * @param staffsafeInfo 培训档案人员信息
     * @return 结果
     */
    public int updateStaffsafeInfo(StaffsafeInfo staffsafeInfo);

    /**
     * 删除培训档案人员信息
     * 
     * @param id 培训档案人员信息主键
     * @return 结果
     */
    public int deleteStaffsafeInfoById(String id);

    /**
     * 批量删除培训档案人员信息
     * 
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteStaffsafeInfoByIds(String[] ids);

    /**
     * 批量删除培训档案人员类型
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteStaffTypeByUserIds(String[] ids);

    /**
     * 通过培训档案人员信息主键删除培训档案人员类型信息
     *
     * @param id 培训档案人员信息ID
     * @return 结果
     */
    public int deleteStaffTypeByUserId(String id);

    /**
     * 批量新增培训档案人员类型
     *
     * @param tStaffTypeList 培训档案人员类型列表
     * @return 结果
     */
    public int batchStaffType(List<StaffType> tStaffTypeList);


    /**
     * 批量删除培训档案课程记录
     * 
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteStaffsafeRecordByUserCodes(String[] ids);
    
    /**
     * 批量新增培训档案课程记录
     * 
     * @param staffsafeRecordList 培训档案课程记录列表
     * @return 结果
     */
    public int batchStaffsafeRecord(List<StaffsafeRecord> staffsafeRecordList);
    

    /**
     * 通过培训档案人员信息主键删除培训档案课程记录信息
     * 
     * @param id 培训档案人员信息ID
     * @return 结果
     */
    public int deleteStaffsafeRecordByUserCode(String id);

    /**
     * 删除所有培训档案人员信息
     *
     * @return 结果
     */
    public int deleteStaffsafeInfoAll();
}
